package com.ssyt.lms.sys.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.ssyt.lms.common.controller.BaseController;
import com.ssyt.lms.entity.UserInfo;
import com.ssyt.lms.sys.constant.SystemConstant;
import com.ssyt.lms.sys.service.IRoleInfoService;
import com.ssyt.lms.sys.service.IUserInfoService;

@Controller
@RequestMapping("/user")
public class UserInfoController extends BaseController implements SystemConstant{
	
	@Autowired
	@Qualifier("userService")
	private IUserInfoService userService;
	
	@Autowired
	@Qualifier("roleService")
	private IRoleInfoService roleService;

	/**
	 * 定义登录的方法
	 */
	@RequestMapping("/login")
	public String login(UserInfo user,HttpServletRequest request) {
		String result =  INIT_LOGIN;
		user = userService.login(user);
		
		if (null!=user) {
			// 把当前登录用户所有信息存储在session中
			getSession(request).setAttribute(CURRENT_USER, user);
			
			result = INIT_INDEX; 
		}
		return result;
	}
	
	/**
	 * 定义登出方法
	 */
	@RequestMapping("/logout")
	public String logout(HttpServletRequest request) {
		getSession(request).invalidate();
		
		return INIT_LOGIN;
	}
	
	/**
	 * 定义查询所有用户信息的方法
	 */
	@RequestMapping("/listUser")
	public String listUser(UserInfo user,Model model) {
		
		model.addAttribute("userList", userService.listUserInfo(user));
		model.addAttribute("roleInfos", roleService.listRoleInfo());
		return LIST_USER_PAGE;
	}
	
	/**
	 * 定义逻辑删除用户对象的方法
	 */
	@RequestMapping("/deleteUser")
	public String deleteUser(UserInfo user) {
		userService.updateUserById(user);
		
		return LIST_USER_CONTROLLER;
	}
	
	/**
	 * 定义初始化修改人员信息的方法
	 */
	@RequestMapping("/initUpdateUser")
	public String initUpdateUser(UserInfo user,Model model) {
		user = userService.selectUserInfoById(user);
		model.addAttribute("roleInfos", roleService.listRoleInfo());
		model.addAttribute("userInfo", user);
		
		return UPDATE_USER_PAGE;
	}
	
	/**
	 * 定义修改用户信息的方法
	 */
	@RequestMapping("/updateUser")
	public String updateUser(UserInfo user) {
		userService.updateUserInfo(user);
		
		return LIST_USER_CONTROLLER;
	}
	
	/**
	 * 定义初始化添加用户信息界面的方法
	 */
	@RequestMapping("/initAddPage")
	public String initAddUserPage(Model model) {
		model.addAttribute("roleInfos", roleService.listRoleInfo());
		
		return ADD_USER_PAGE;
	}
	
	/**
	 * 定义添加用户的方法
	 */
	@RequestMapping("/addUser")
	public String addUser(UserInfo user) {
		userService.addUserInfo(user);
		
		return LIST_USER_CONTROLLER;
	}
}
